package edu.xalead;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class DynaProxy implements InvocationHandler {

    private Object target;
    public DynaProxy (Object target){
        this.target = target;
    }
    //（反射类里的）动态代理类 虚拟机通过接口
    // proxy代理 method 方法 obj..方法
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Ser ser = new Ser();
        ser.chuanyifu();
        ser.chifan();
        return method.invoke(target,args);
    }

    public Object createProxy(){
        //类加载器 加载这个类
        return Proxy.newProxyInstance(this.getClass().getClassLoader(),
                               target.getClass().getInterfaces(),
                               this
                               );
    }
}
